package com.cn.wanxi.util;

public class ReadMe {
    /**
     * 1.每一个对象一个service接口，一个impl实现层
     * 2.每一个dao的接口和实现层
     * 3.将dao层模拟数据存入数据库
     */
    /**
     * 2022-6-10
     * SELECT * FROM canyin04.product order by name; --  ascii 嘛
     * -- 模糊查询 就是输入较少的字符查询
     * select * from user where name ='曾英';
     * select * from user where username like 'supeng%';
     * -- % 至少代表0个字符  _表示一个字符
     * select * from user where username like '%aa';
     * select * from product where name like '%_回_%';
     * select * from product where name like '%回%' or name like '%肉%';
     * select * from product where name like '%肉%回%';
     * select * from product where name REGEXP '[0-9]';
     * -- a第几页 ,b 每一页显示的条数
     * -- select * from product limit ,b;
     * select * from product limit 0,10; --  1-1
     * -- select * from product limit 10,20;
     * select * from product limit 10,10; -- （2-1）*10
     * select * from product limit 20,10; -- （3-1）*10
     * -- limit 前面的数，从第几条开始查询    第二个参数是什么意思：要查询的条数:每一页显示多少条
     * -- declare a;declare b;
     * -- select * from product limit (a-1)*b,b;
     * -- select * from product limit (2-1)*10,10; -- limit 的参数必须为一个结果
     * -- sql 里面的所有字符必须跟空格
     * select * from nav limit 0,10;
     *
     * -- 查询总条数alter
     * select count(1) from user;-- 用来查询出是否有空列的
     * select count(*) from user; -- 根据索引去查询出总列数
     * select count(id) from user;
     * select count(username) from user;
     * select count(birthday) from user; -- 如果是其他列，查询出来的数据不会被包含进去
     * select max(id) from user;
     * select min(id) id from user;
     * select sum(price) from product;
     *
     * (select * from product where id=
     * (select max(id) from product where id<66))
     * union all
     * (select * from product where id=66 )
     *
     * union all
     * ( select * from product where id=
     *  (select min(id) from product where id>66))
     *  -- 1.查询id 2.子查询 3.拼接
     */
    /**
     * 2022-6-15
     * 以后，无论是前端还是后端数据相互发送，都应该以对象的形式进行传递
     * json对象
     * 今天任务：servlet层，通过postman去测试你所有的接口是否正常（六大步骤）
     * service层：只需要修改dao层
     * dao层：sql语句，调用jdbc
     * 注意：接口地址要唯一
     *
     */
    /**
     * 2022-6-16
     * 自己写一个函数，来创建dao，model，service，servlet层
     * 1.model
     *  1）连接数据库
     *  2）拿到所有的列名
     *  3）创建文件夹，在创建model文件
     *  4）写入数据，将表名加+model，将列名换成小驼峰，将表的数据类型和Java的数据类型对应
     *
     *
     */
    /**
     * 2022-6-17
     * 文件上传：
     * 只单独上传一个文件
     * 我们可以将最终保存的路径放到一个作用域里面
     * req.setAttribute("imgHref",filePath);
     * 当在点击产品提交的时候，我们可以在servlet里面通过
     * req.getAttribute("imgHref");得到req里面保存的路径
     *
     *
     */
    /**
     * 2022-6-21
     * 前端永远不安全：
     * 所以只要涉及到安全都应该放在服务器：后端
     */
    /**
     * 2022-6-23
     * 用户查询
     * 1.写html页面  <table class="layui-hide" id="test"></table>
     * 2.写js
     * 3.后台代码
     * 注意：容易出错的：sql语句
     * myAjax封装 关掉异步
     */
    /**
     * 2022-6-28
     * 产品新增：
     * 1.html页面  注意：菜系单独先添加
     * 2.文件上传：html页面 1)按钮2）默认图片
     * 3.文件上传：js   赋值文件上传js upload = layui.upload
     *      修改：1）url  2） $('#demo1').attr('src', res.data.src);
     * 4.后台Java代码FileUpload 类必须返回 统一数据格式：必须包含 src的对象
     * -------------------------------------------------------------
     */
    /**
     * 2022-6-29
     * 以后你们添加或者修改代码的时候，永远不要修改别人的代码
     * 必须让用户登录才能进行操作
     * 安全认证
     *
     */
    /**
     * 2022-6-30
     * 数据库
     * 1.数据库的语言 ：四种
     * 操纵语言   表数据内容的增删改
     * 查询语言   查询
     * 控制语言   权限
     * 定义语言   表，数据库的创建，修改，删除
     * 2.数据类型
     * 整形  int    int
     * tinyint      byte
     * smallint      short
     * int   int
     * bigint    long
     * ---------------------
     * char   varchar   text                String
     * char   varchar   text的区别？
     * char  长度一致 ：定长  一般存64个
     * varchar  变长  65535/3   一个字符占多少个字节？
     * text  文本  可以存放很多数据
     * 并不是所有的数据都要存放于数据库：如果数据量比较大，
     * 一般用文件直接存，这里直接存文件的路径：
     * 如果某列要单独存一个很大的数据，我们可以单独创建一个表
     * -----------------------------------
     * 日期两个？之间的区别？：datetime，TIMESTAMP   String
     * 价格：decimal(5,3) 五位有效数字，3位小数    BigDecimal
     * 注意：如果以后有小数，你们可以将效数乘以小数的10的倍数，就不会出现进度丢失
     * 以后还可以，将整数和小数分开，用两列
     * ---------------------------------
     * 注意：一般数据库的表数据大于五百万条或者大于2G的情况下，会涉及到分库或者分表
     * 3.查询
     * 1）单表查询
     * 2）两表查询
     *  联合查询  select * from a ,b  where a.id=b.typeId
     *  左连接  left join   on
     *  右连接  right join   on
     *  内连接   join   on
     *  合并查询  union all
     * 3）函数
     *  sum，max，min，aug，count，date_format,now,sysdate,find_in_set,
     * 4）子查询
     *      select * from (
     *      select * from user where id between 5 and 50
     *      ) temp
     *      where  age>18
     *   和视图有联系   临时表
     *   视图：理解成函数  function aa(id){}
     *
     * --------------------------------
     * 1.通过表创建model
     * 2.在Java里面去执行sql语句
     * 3.JDBC  刚开始写在一个main里面：
     *      1）加载驱动
     *      2）得到连接
     *      3）编译sql语句
     *      4）执行sql语句
     *      5）解析结果集并返回具体数据或者  返回影响的条数
     * 4.如果有很多地方都用到了jdbc里面的代码，所以需要提取公共的代码JDBC
     * 5.为了防止sql注入，用preparedStatement；用？来代替字符串拼接
     * 6.每一个表都有增删查改的操作，所以在dao层把方法都写上。引入了@Test测试方法
     * 7.数据不能自己写，只能由前端发送过来
     *      1）servlet  六个步骤
     *      2）service  返回统一结果格式
     *      3）dao   写sql语句
     * 8.引入了postman进行接口测试
     * ---------------------------------------------------
     * 1.后台代码每个表都有固定的方法，所以提取了公共的service和dao层：泛型
     * 2.ResultModel  统一返回格式：重载，单例
     * -------------------------------------------------------------------
     * 前端代码：
     * 1.js基础
     *      1）变量定义
     *      2）对象
     *      3）数组
     *      4）循环：for
     *      let arr_box = [];
     *       $('input[type=checkbox][name=hobby]:checked').each(function () {
     *          arr_box.push($(this).attr("title"));
     *         });
     *       5）匿名函数
     *2.登录
     *  1）验证码和正则表达式
     *  2）验证码的几个步骤：思路
     *  3）正则表达式---流程图---要判断用户输入格式是否正确
     *  4）ajax   里面的几个属性：url:data:type:dataType:success:function(res)
     *  5)公共的ajax
     * 注意：对于js我们想要知道是否已经执行，可以写console.log(11);
     *3.登录成功跳转到登录页面
     *      1）将登录名发送到另一个页面
     *      2）日期：当前登录时间
     *      3）定时器
     *      4）赋值：$("#loginName").html("aa");
     *4.用户查询
     *      1）layui的table
     *        （1）赋值table的html
     *        （2）赋值table的js
     *        （3）field对应model里面的属性
     *        （4）模板
     *        （5）开启分页
     *        （6）我们需要得到后台的值：需要打印出来parseData: function (res)
     * 5.模糊查询
     *          添加查询条件  where: data
     *          1）页面加载完成需要查询
     *          2）点击查询按钮需要查询
     *          所以，我们可以将查询所有的代码放入一个方法里面
     *          3）后台sql语句的拼接
     *          只要你的表格里面出现的数据，用户都有可能会认为可以进行模糊查询
     *          只要有数字和日期的都应该做区间查询
     * 6.新增和修改  ：表单
     *          赋值和取值
     *          $("#username").val(data.username);
     *          $('input[type=radio][name=enable][value=' + data.enable + ']').attr("checked", "checked");
     *                $('input[type=checkbox][name=hobby]').each(function () {
     *                 // arr_box.push($(this).attr("title"));
     *                 for (let i = 0; i < hobbys.length; i++) {
     *                     if (hobbys[i] == $(this).attr("title")) {
     *                         $(this).attr("checked", "checked");
     *                     }
     *                 }
     *             });
     *          取值：
     *         let username=  $("#username").val();
     *         let title=$(this).attr("title");
     *         $(this).attr("aa","fasdfsa");
     *         attr设置对象的key值，就是属性值
     *         key值不能重复，如果写了key值，只要里面没有则认为新增一个key值
     *         如果有，则覆盖以前的值
     *         表单赋值需要加： form.render();
     * 7.文件上传和富文本
     *      赋值html和js
     *      对于后台返回的格式，必须有src这个属性值
     *      图片赋值：$("#demo1").attr("src", data.imgHref);
     *      富文本赋值：layedit.setContent(index, data.content);
     *      富文本取值：layedit.getContent(index);
     *      注意：如果layedit，index没有值，可以将它放在全局变量
     *      js加载的时候，从上到下加载
     * 8.session安全认证：前端和后代都应该判断是否已经登录
     *
     * 注意：点击编辑的时候，一定记得传ID到后台，
     *
     *
     *
     */
}
